#include "coin.h"
#include <QDebug>


Coin::Coin(QString img)
{
    QPixmap pix;
    bool ret= pix.load(img);
    if(!ret){
        QString str=QString("图片加载失败，失败的路径为%1").arg(img);
        qDebug()<< str;
        return;

    }
    this->setFixedSize(pix.width(),pix.height());
    this->setStyleSheet("QPushButton{border:0px;}");
    this->setIcon(pix);
    this->setIconSize(QSize(pix.width(),pix.height()));

    //创建定时器
    this->timer1 = new QTimer(this);
    this->timer2 = new QTimer(this);

    //监听金币翻银币的定时器
    connect(this->timer1,&QTimer::timeout,[=](){
        QPixmap pix;
        QString str = QString(":/resource/Coin000%1.png").arg(this->min++);
        bool ret= pix.load(str);
        if(!ret){
            QString str=QString("图片加载失败，失败的路径为%1").arg(str);
            qDebug()<< str;
            return;

        }
        this->setFixedSize(pix.width(),pix.height());
        this->setStyleSheet("QPushButton{border:0px;}");
        this->setIcon(pix);
        this->setIconSize(QSize(pix.width(),pix.height()));

        if(this->min > this->max){
            this->min = 1;
            this->timer1->stop();
            isAnimation = false;
        }

    });

    //监听银币翻金币的定时器
    connect(this->timer2,&QTimer::timeout,[=](){
        QPixmap pix;
        QString str = QString(":/resource/Coin000%1.png").arg(this->max--);
        bool ret= pix.load(str);
        if(!ret){
            QString str=QString("图片加载失败，失败的路径为%1").arg(str);
            qDebug()<< str;
            return;

        }
        this->setFixedSize(pix.width(),pix.height());
        this->setStyleSheet("QPushButton{border:0px;}");
        this->setIcon(pix);
        this->setIconSize(QSize(pix.width(),pix.height()));

        if(this->max < this->min){
            this->max = 8;
            this->timer2->stop();
            isAnimation = false;
        }

    });
}

//点击硬币 调用翻转效果函数 改变硬币的标志
void Coin::changeFlag()
{
    if(this->flag){
        this->timer1->start(30);
        this->flag = false;
    }
    else{
        this->timer2->start(30);
        this->flag = true;
    }
    isAnimation = true;
}

void Coin::mousePressEvent(QMouseEvent *e)
{
    if(this->isAnimation || this->isWin){  //做动画期间或者游戏已经胜利禁用点击
        return;
    }
    else{
        QPushButton::mousePressEvent(e);
    }
}
